﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using SnackXpress.Client;
using SnackXpress.Observer.Subject;

namespace SnackXpress
{
    public partial class Form1 : Form
    {
        private ArrayList filialen = new ArrayList();
        private ArrayList snacks = new ArrayList();

        private DiscountSubject discount = new DiscountSubject();
        private McDonaldWinkel mcdonald = null;
        private BurgerKingWinkel burgerking = null;   

        private string name;
        private string filiaalMcDonald;
        private string filiaalBurgerKing;
        private int bestellingsnummer = 0;

        // Plaats text in de comboboxen
        public Form1()
        {
            InitializeComponent();
            LoadClasses();
            FillLists();

            foreach (string s in filialen) 
            {
                comboBox2.Items.Add(s);
            }
            comboBox2.Text = filiaalMcDonald;

            foreach (string s in snacks)
            {
                comboBox1.Items.Add(s);
            }
            comboBox1.Text = "Kleine hamburger";
        }

        // Instantieer de benodigde classes
        private void LoadClasses()
        {
            this.mcdonald = new McDonaldWinkel(this.discount);
            this.burgerking = new BurgerKingWinkel(this.discount);
        }

        // Vullen van de lijsten met producten
        private void FillLists()
        {
            snacks.Add("Kleine hamburger");
            snacks.Add("Medium hamburger");
            snacks.Add("Grote hamburger");
            snacks.Add("Broodje Frikandel");
            snacks.Add("Frikandel");
            snacks.Add("Geen");
            filiaalMcDonald = mcdonald.Name = "McDonald";
            filiaalBurgerKing = burgerking.Name = "Burger King";
            filialen.Add(filiaalMcDonald);
            filialen.Add(filiaalBurgerKing);
        }

        // Filiaal selecteren
        private void button2_Click(object sender, EventArgs e)
        {
            if (comboBox2.SelectedItem == null)
            {
                label5.Text = "U heeft geselecteerd: " + "geen filiaal geselecteerd";
            }
            if ((string)comboBox2.SelectedItem == filiaalMcDonald)
            {
                label5.Text = "U heeft geselecteerd: " + filiaalMcDonald;
                name = filiaalMcDonald;
            }
            else if ((string)comboBox2.SelectedItem == filiaalBurgerKing)
            {
                label5.Text = "U heeft geselecteerd: " + filiaalBurgerKing;
                name = filiaalBurgerKing;
            }
        }

        // Hamburger selecteren
        private void button1_Click(object sender, EventArgs e)
        {
            label3.Text = "Gekozen hamburger: " + comboBox1.Text;  
        }

        // In deze methode wordt de bestelling definitief besteld en op het scherm getoond.
        private void button4_Click(object sender, EventArgs e)
        {
            // Check of er uberhaubt een product is geselecteerd.
            if (comboBox1.Text == "Geen") 
            {
                textBox1.Text = "Selecteer een product";
                return;
            }

            // Als het geselecteerde filiaal 1 of 2 is dan worden de producten besteld. 
            if (name == filiaalMcDonald)
            {
                bestellingsnummer++;

                textBox1.Text = "Bestelling bij de: " + mcdonald.Name + "\r\n";
                if (comboBox1.Text != "Geen")
                {
                    textBox1.Text += comboBox1.Text + "\r\n";
                }
                Snack snack = mcdonald.OrderSnack(comboBox1.Text);

                textBox1.Text += "\r\nBestellingsnummer: " + bestellingsnummer;
                textBox1.Text += "\r\nTotale prijs: " + mcdonald.getPrijs().ToString("C2");

                if (bestellingsnummer >= 100) { bestellingsnummer = 0; }
            }
            if (name == filiaalBurgerKing) 
            {                
                bestellingsnummer++;

                textBox1.Text = "Bestelling bij de: " + burgerking.Name + "\r\n";
                
                if (comboBox1.Text != "Geen")
                {
                    textBox1.Text += comboBox1.Text + "\r\n";
                }
                Snack snack = burgerking.OrderSnack(comboBox1.Text);

                textBox1.Text += "\r\nBestellingsnummer: " + bestellingsnummer;
                textBox1.Text += "\r\nTotale prijs: " + burgerking.getPrijs().ToString("C2");

                if (bestellingsnummer >= 100) { bestellingsnummer = 0; }
            }
        }

        // Methodes om een aanbieding mee te geven.
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (comboBox1.Text == "Kleine hamburger" || comboBox1.Text == "Medium hamburger" || comboBox1.Text == "Grote hamburger")
            {
                discount.setDiscount(checkBox1.Checked, "hamburger");
            }
            if (comboBox1.Text == "Frikandel" || comboBox1.Text == "Broodje Frikandel")
            {
                discount.setDiscount(checkBox1.Checked, "frikandel");
            }            
        }

    }
}
